package esc1Caso1;

import java.util.ArrayList;
import java.util.List;

import aima.search.framework.Successor;
import aima.search.framework.SuccessorFunction;

public class FuncionSucesoresSWAP implements SuccessorFunction{

	@Override
	public List<Successor> getSuccessors(Object arg0) {
		Estado estado = (Estado) arg0;
		ArrayList<Successor> succesores = new ArrayList<Successor>();
		
		//Generar succesores
		ArrayList<Integer> asignaciones = estado.getAsignaciones();
		for(int pet1 = 0; pet1 < asignaciones.size(); pet1++){
			for (int pet2 = pet1 +1 ; pet2 < asignaciones.size(); pet2++) {
				int file = estado.getPeticiones().getRequest(pet1)[1];
				if (estado.getServidores().fileLocations(file).contains(pet2)){
					Estado succesor = estado.getCopia();
					int s1 = asignaciones.get(pet1);
					int s2 = asignaciones.get(pet2);
					//System.out.println("FROM " + s1 + " to " + s2);
					succesor.moverPeticion(pet1, s2); 
					succesor.moverPeticion(pet2, s1);
					succesores.add(new Successor("SWAP", succesor));
				}
			}
		}
		//System.out.println("NEW SON");
;		return succesores;
	}

}
